#include <iostream>

/*
    模板函数和普通函数都可以匹配的情况下，优先选择普通函数

    普通函数可以发生自动的类型转换，比如char 转换为 int 类型，而模板函数不可以
*/

template <typename T>
void add(T a, T b)
{
    std::cout << "模板函数调用了" << std::endl;
    std::cout << a + b << std::endl;
}

void add(int a, int b)
{
    std::cout << "普通函数调用了" << std::endl;
    std::cout << a + b << std::endl;
}

int main(int argc, char const *argv[])
{

    int a = 10;
    int b = 20;
    char c = 'a'; // 97
    char d = 'A'; // 65
    add(c, d);    // 自动类型转换，调用的是普通函数
    add(a, b);    // 普通函数和模板函数都满足条件，优先调用普通函数
    return 0;
}
